/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia.agente;

import entidades.FichaInternacionImpl;
import java.util.Date;
import java.util.List;
import persistencia.Agente;
import persistencia.Criterio;
import persistencia.FabricaCriterio;
import persistencia.FachadaInterna;

/**
 *
 * @author Sebastian
 */
public class FichaInternacionAgente extends Agente implements FichaInternacion {
//(oiPaciente)(oidEstadoFichaInternacion)(oidCama)(oidHabitacion)

    private FichaInternacionImpl fichaInternacionImpl;
    
    private String oidPaciente;
    private boolean matPaciente;
    
    private String oidEstadoFichaInternacion;
    private boolean matEstadoFichaInternacion;
    
    private String oidCama;
    private boolean matCama;
    
    private String oidHabitacion;
    private boolean matHabitacion;
    
    public boolean matPedidos;

    public FichaInternacionImpl getFichaInternacionImpl() {
        return fichaInternacionImpl;
    }

    public void setFichaInternacionImpl(FichaInternacionImpl fichaInternacionImpl) {
        this.fichaInternacionImpl = fichaInternacionImpl;
    }

    public String getOidCama() {
        return oidCama;
    }

    public void setOidCama(String oidCama) {
        this.oidCama = oidCama;
    }

    public String getOidEstadoFichaInternacion() {
        return oidEstadoFichaInternacion;
    }

    public void setOidEstadoFichaInternacion(String oidEstadoFichaInternacion) {
        this.oidEstadoFichaInternacion = oidEstadoFichaInternacion;
    }

    public String getOidHabitacion() {
        return oidHabitacion;
    }

    public void setOidHabitacion(String oidHabitacion) {
        this.oidHabitacion = oidHabitacion;
    }

    public String getOidPaciente() {
        return oidPaciente;
    }

    public void setOidPaciente(String oidPaciente) {
        this.oidPaciente = oidPaciente;
    }

    @Override
    public int getNroFicha() {
        return fichaInternacionImpl.getNroFicha();
    }

    @Override
    public void setNroFicha(int nroFicha) {
        fichaInternacionImpl.setNroFicha(nroFicha);
    }

    @Override
    public Date getFechaIngreso() {
        return fichaInternacionImpl.getFechaIngreso();
    }

    @Override
    public void setFechaIngreso(Date fechaIngreso) {
        fichaInternacionImpl.setFechaIngreso(fechaIngreso);
    }

    @Override
    public Date getFechaEgreso() {
        return fichaInternacionImpl.getFechaEgreso();
    }

    @Override
    public void setFechaEgreso(Date fechaEgreso) {
        fichaInternacionImpl.setFechaEgreso(fechaEgreso);
    }

    @Override
    public EstadoFichaInternacion getEstado() {
        if(!matEstadoFichaInternacion){
            this.setEstado(FachadaInterna.getInstancia().buscar(EstadoFichaInternacion.class, oidEstadoFichaInternacion));
            matEstadoFichaInternacion = true;
        }
        return fichaInternacionImpl.getEstado();
    }

    @Override
    public void setEstado(EstadoFichaInternacion estado) {
        fichaInternacionImpl.setEstado(estado);
    }

    @Override
    public List<Pedido> getPedidos() {
        Criterio criterio;
        if(!matPedidos){
            criterio = FabricaCriterio.getInstancia().obtenerCriterio("oidFichaInternacion", Criterio.OperadorRelacionalEnum.Igual.getString(), this.getOid(), true);
            setPedidos(FachadaInterna.getInstancia().buscar(Pedido.class, criterio));
            matPedidos = true;
        }
        return fichaInternacionImpl.getPedidos();
    }

    @Override
    public void setPedidos(List<Pedido> pedidos) {
        fichaInternacionImpl.setPedidos(pedidos);
    }

    @Override
    public Cama getCama() {
        if(!matCama){
            this.setCama(FachadaInterna.getInstancia().buscar(Cama.class, oidCama));
            matCama = true;
        }
        return fichaInternacionImpl.getCama();
    }

    @Override
    public void setCama(Cama cama) {
        fichaInternacionImpl.setCama(cama);
    }

    @Override
    public Habitacion getHabitacion() {
        if(!matHabitacion){
            this.setHabitacion(FachadaInterna.getInstancia().buscar(Habitacion.class, oidHabitacion));
            matHabitacion = true;
        }
        return fichaInternacionImpl.getHabitacion();
    }

    @Override
    public void setHabitacion(Habitacion habitacion) {
        fichaInternacionImpl.setHabitacion(habitacion);
    }

    @Override
    public Paciente getPaciente() {
        if(!matPaciente){
            this.setPaciente(FachadaInterna.getInstancia().buscar(Paciente.class, oidPaciente));
            matPaciente = true;
        }
        return fichaInternacionImpl.getPaciente();
    }

    @Override
    public void setPaciente(Paciente paciente) {
        fichaInternacionImpl.setPaciente(paciente);
    }
}
